/**
 * 桥接模式
 * 如果一个事物需要从两个不同的维度来进行描述，那么这个事物在抽象到java对象的时候就可以使用桥接模式来进行设计
 *
 * 如：描述不同品牌的不同类型的手机，那么当我们将手机抽象出来的时候就会有两个不同的纬度：品牌和类型
 * 品牌：小米，华为 、苹果
 * 类型：全面屏，折叠屏
 * 那对应的所有产品可能就是  小米全面屏，华为全面屏，苹果全面屏，  小米折叠屏，华为折叠屏，苹果折叠屏
 *
 * 若此时再新增一个类型，如翻盖，那么所有品牌就要去实现这个翻盖手机，小米翻盖。。。。
 * 当品牌过多的时候，这就不好玩了
 *
 * 桥接模式，分离抽象和实现（我也不知道怎么分离，干脆分离维度算了，后来想想，或许可以这样分 如手机类型，这个就是抽象，那么不同品牌对其的实现不就是实现了么）
 * 将品牌抽离，至于他们是如何实现这些全面屏、折叠屏的就不管了
 * 抽象手机，手机持有品牌的引用，手机的具体类型通过继承抽象出来的手机来拿到对应品牌的引用，然后通过自己重写方法，添加对应的特性
 *
 * 。。。。。。感觉这个例子不是太合适的样子
 *
 *
 *
 * 桥接模式的适用场景：
 *  JDBC驱动程序
 * 银行转账系统
 *      转账分类：网上转账、柜台转账、ATM转账
 *      用户类型：普通用户、银卡用户、金卡用户
 * 消息管理
 *      消息类型：即时消息、延时消息
 *      消息分类：手机短信、邮件信息、QQ消息
 *
 *
 */
package com.young.design.pattern.bridge;